from primitive to advanced